home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1985 July / 64er_Magazin_85-07_1985_Markt__Technik_de.d64 / sound editor (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  27KB  |  998 lines

  1. 0 if a>1 then return :rem dummy-routine
  2. 1000 rem ******************************
  3. 1005 rem ***                        ***
  4. 1010 rem ***    sound - editor      ***
  5. 1015 rem ***                        ***
  6. 1020 rem ***  fuer die parameter    ***
  7. 1025 rem *** von sid und modulator  ***
  8. 1030 rem ***                        ***
  9. 1035 rem *** t. kraetzig      1985  ***
  10. 1040 rem ***                        ***
  11. 1045 rem ******************************
  12. 1050 rem
  13. 1055 rem falls von menue 7 gekommen,
  14. 1060 rem dorthin zurueck
  15. 1065 if m=7 then 7665
  16. 1070 rem
  17. 1120 rem modulator laden
  18. 1130 if a=0then a=1:load"modulator",8,1
  19. 1140 rem
  20. 1150 rem dimensionierungen
  21. 1155 poke 56,144:clr:rem b.-grenze $9000
  22. 1160 dim v%(7,255),tn%(255),th(24)
  23. 1165 dim bf(2),t(2),o(2),of(2),s(2)
  24. 1170 dim c1(2),c(2),ad(2),sr(2)
  25. 1175 dim bl$(6),kv$(3),kf$(6),md$(3)
  26. 1180 dim tn$(11)
  27. 1185 rem
  28. 1190 gosub 8000  :rem initialisierungen
  29. 1200 gosub 4000  :rem hauptmenue
  30. 1210 rem
  31. 1500 rem===============================
  32. 1510 rem hauptschleife, sprungverteiler
  33. 1520 rem===============================
  34. 1530 get a$:if a$="" then 1530
  35. 1540 a=asc(a$)
  36. 1550 sys gs,v%(m,a) :rem berechn. gosub
  37. 1560 goto 1530
  38. 2000 rem===============================
  39. 2010 rem noten spielen
  40. 2020 rem===============================
  41. 2025 poke 650,0
  42. 2030 f=th(tn%(a)):ad=mo+72:x=peek(ad)
  43. 2035 if s(0) then sysdo,mo   ,f*bf(0):poke si+4 ,c1(0)
  44. 2040 if s(1) then sysdo,mo+7 ,f*bf(1):poke si+11,c1(1)
  45. 2050 if s(2) then sysdo,mo+14,f*bf(2):poke si+18,c1(2)
  46. 2090 if eg then poke ad,x or 1
  47. 2110 if su then poke 650,128:return
  48. 2120 if peek(203)<>64 and peek(198)=0 then 2120
  49. 2130 poke ad,x and 254
  50. 2140 poke si+4 ,c(0)
  51. 2150 poke si+11,c(1):poke si+18,c(2)
  52. 2160 poke 650,128:return
  53. 2500 rem===============================
  54. 2510 rem numerische parameter aendern,
  55. 2520 rem verteiler einzelroutinen
  56. 2530 rem===============================
  57. 2550 pw=pw+p2:if pw>=pm then pw=pw-pm
  58. 2555 sysgt,pv
  59. 2560 pw=pw+p1:if pw>=pm then pw=pw-pm
  60. 2565 sysgt,pv
  61. 2570 pw=pw-p1:if pw< 0  then pw=pw+pm
  62. 2575 sysgt,pv
  63. 2580 pw=pw-p2:if pw< 0  then pw=pw+pm
  64. 2585 sysgt,pv
  65. 2600 rem-------------------------------
  66. 2605 rem lfof
  67. 2610 sysdo,pa,pw:l=len(str$(pw))
  68. 2620 syspr,3+ln,4,bl$(6-l);f2$;pw
  69. 2625 return
  70. 2630 rem-------------------------------
  71. 2635 rem lfop
  72. 2640 poke pa,pw:l=len(str$(pw))
  73. 2650 syspr,3+ln,11,bl$(4-l);f2$;pw
  74. 2655 return
  75. 2660 rem-------------------------------
  76. 2665 rem lfoa
  77. 2670 poke pa,pw:l=len(str$(pw))
  78. 2680 syspr,3+ln,16,bl$(4-l);f2$;pw
  79. 2685 return
  80. 2690 rem-------------------------------
  81. 2695 rem lfo kurve
  82. 2700 if a>136 or a<133 then return
  83. 2705 b=a-133  :rem b=0,1,2,3
  84. 2710 poke pa,(peek(pa)and231)or(b*8)
  85. 2715 syspr,3+ln,21,f2$;kv$(b)
  86. 2717 syspr,6   ,34,f2$;kf$(b):return
  87. 2720 rem-------------------------------
  88. 2725 rem lfo modus
  89. 2730 if a>135 or a<133 then return
  90. 2735 b=a-132  :rem b=1,2,3
  91. 2740 poke pa,(peek(pa)and249)or(b*2)
  92. 2745 syspr,3+ln,28,f2$;md$(b):return
  93. 2750 rem-------------------------------
  94. 2755 rem eg a d s r ega (an=0-4)
  95. 2760 poke pa,pw:l=len(str$(pw))
  96. 2765 syspr,7,s,bl$(4-l);f2$;pw:return
  97. 2770 rem-------------------------------
  98. 2775 rem eg form
  99. 2780 b=-(a>134):rem f1,f3 b=0 f5,f7 b=1
  100. 2785 poke pa,(peek(pa)and247)or(b*8)
  101. 2790 syspr,7,29,f2$;chr$(43+2*b)
  102. 2795 return
  103. 2810 rem-------------------------------
  104. 2815 rem eg modus
  105. 2820 if a>135 or a<133 then return
  106. 2825 b=a-132  :rem b=1,2,3
  107. 2830 poke pa,(peek(pa)and249)or(b*2)
  108. 2835 syspr,7,33,f2$;md$(b):return
  109. 2840 rem-------------------------------
  110. 2845 rem filter frequenz
  111. 2850 poke pa,pwand7:poke pa+1,int(pw/8)
  112. 2855 l=len(str$(pw))
  113. 2860 syspr,5,2,bl$(5-l);f2$;pw:return
  114. 2865 rem-------------------------------
  115. 2870 rem filter resonanz
  116. 2875 rf=(rf and 15)+16*pw:poke pa,rf
  117. 2880 l=len(str$(pw))
  118. 2885 syspr,5,9,bl$(3-l);f2$;pw:return
  119. 2890 rem-------------------------------
  120. 2895 rem filter schalter
  121. 2900 if a>136 or a<133 then return
  122. 2905 b=a-133  :rem b=0,1,2,3
  123. 2910 x=2^b:x1=255-x:rem masken
  124. 2915 y=rf and x
  125. 2920 rf=(rf and x1)or(x-y):poke pa,rf
  126. 2925 y=-128*(y=0):ad=1024+(5+b)*40+15
  127. 2930 for i=ad to ad+5
  128. 2935 : poke i,(peek(i)and127)or y
  129. 2940 next:return
  130. 2945 rem-------------------------------
  131. 2950 rem filter modus
  132. 2955 if a>136 or a<133 then return
  133. 2960 b=a-129  :rem b=4,5,6,7
  134. 2965 x=2^b:x1=255-x:rem masken
  135. 2970 pw=peek(pa):y=pw and x
  136. 2975 poke pa,(pw and x1)or(x-y)
  137. 2980 y=-128*(y=0):ad=1024+(1+b)*40+25
  138. 2985 for i=ad to ad+3
  139. 2990 : poke i,(peek(i)and127)or y
  140. 2995 next:return
  141. 3000 rem-------------------------------
  142. 3005 rem lautstaerke
  143. 3010 poke pa,(peek(pa) and 240) or pw
  144. 3015 l=len(str$(pw))
  145. 3020 syspr,5,31,bl$(3-l);f2$;pw:return
  146. 3050 rem-------------------------------
  147. 3052 rem basisfrequenz
  148. 3054 if a<>134 then 3064
  149. 3056 rem f3 offset erhoehen
  150. 3058 of=of+1:if of<=50 then 3110
  151. 3062 of=-49:goto 3076
  152. 3064 if a<>135 then 3074
  153. 3066 rem f5 offset erniedrigen
  154. 3068 of=of-1:if of>=-49 then 3110
  155. 3072 of=50:goto 3084
  156. 3074 if a<>133 then 3082
  157. 3076 rem tonnummer erhoehen
  158. 3078 t=t+1:if t<=11 then 3110
  159. 3080 t=0:goto 3090
  160. 3082 if a<>136 then return
  161. 3084 rem tonnummer erniedrigen
  162. 3086 t=t-1:if t>=0 then 3110
  163. 3088 t=11:goto 3096
  164. 3090 rem oktave erhoehen
  165. 3092 o=o+1:if o<=5 then 3110
  166. 3094 o=0:goto 3110
  167. 3096 rem oktave erniedrigen
  168. 3098 o=o-1:if o>=0 then 3110
  169. 3100 o=5:t=10
  170. 3110 rem basisfrequenz berechnen
  171. 3112 if t=11 and o=5 then t=0:o=0
  172. 3114 bf=440*2^(o-4+(t-9)/12+of/1200)
  173. 3116 o(sn)=o:t(sn)=t:of(sn)=of
  174. 3118 bf(sn)=bf*17.0327
  175. 3120 sysdo,mo+7*sn,f*bf(sn)
  176. 3122 rem anzeigen
  177. 3124 syspr,3+sn,3,f2$;o
  178. 3126 syspr,3+sn,2,tn$(t)
  179. 3128 syspr,3+sn,5,right$(" "+str$(of),3)
  180. 3130 return
  181. 3150 rem-------------------------------
  182. 3155 rem pulsweite stimme
  183. 3160 sysdo,pa,pw
  184. 3165 syspr,3+sn,9,f2$;right$("  "+str$(pw),4)
  185. 3170 return
  186. 3175 rem-------------------------------
  187. 3180 rem a
  188. 3185 ad(sn)=(ad(sn)and15) or pw*16
  189. 3190 poke pa,ad(sn)
  190. 3195 syspr,3+sn,14,f2$;right$(str$(pw),2)
  191. 3200 return
  192. 3205 rem-------------------------------
  193. 3210 rem d
  194. 3215 ad(sn)=(ad(sn)and240) or pw
  195. 3220 poke pa,ad(sn)
  196. 3225 syspr,3+sn,17,f2$;right$(str$(pw),2)
  197. 3230 return
  198. 3235 rem-------------------------------
  199. 3240 rem s
  200. 3245 sr(sn)=(sr(sn)and15) or pw*16
  201. 3250 poke pa,sr(sn)
  202. 3255 syspr,3+sn,20,f2$;right$(str$(pw),2)
  203. 3260 return
  204. 3265 rem-------------------------------
  205. 3270 rem r
  206. 3275 sr(sn)=(sr(sn)and240) or pw
  207. 3280 poke pa,sr(sn)
  208. 3285 syspr,3+sn,23,f2$;right$(str$(pw),2)
  209. 3290 return
  210. 3300 rem-------------------------------
  211. 3305 rem control (bit 7-s)
  212. 3310 if a<>133 and a<>134 then 3335
  213. 3315 rem bit setzen
  214. 3320 c(sn)=c(sn) or 2^(7-s)
  215. 3325 c1(sn)=c(sn) or 1
  216. 3330 syspr,3+sn,26+s,f2$;"1":goto 3355
  217. 3335 rem bit ruecksetzen
  218. 3340 c(sn)=c(sn) and 255-2^(7-s)
  219. 3345 c1(sn)=c(sn) or 1
  220. 3350 syspr,3+sn,26+s,f2$;"0"
  221. 3355 rem control-byte zum sid
  222. 3360 x=c(sn):if su then x=c1(sn)
  223. 3365 poke si+7*sn+4,x:return
  224. 3370 rem-------------------------------
  225. 3375 rem porta
  226. 3380 poke pa,pw:l=len(str$(pw))
  227. 3385 syspr,3+sn,34,bl$(4-l);f2$;pw
  228. 3390 return
  229. 3500 rem===============================
  230. 3510 rem stimme (des-)aktivieren
  231. 3520 rem===============================
  232. 3525 syspr,15,10,f2$;"stimme 1,2,3"
  233. 3530 get a$:if a$=""then 3530
  234. 3540 ifa$="1"ora$="2"ora$="3"then 3560
  235. 3550 goto 3590
  236. 3560 i=val(a$)-1 :s(i)=not s(i)
  237. 3570 if s(i) then print chr$(18);
  238. 3580 syspr,21,31+2*i,f1$;a$;chr$(146);
  239. 3590 syspr,15,10,f1$;"stimme 1,2,3"
  240. 3595 return
  241. 3600 rem===============================
  242. 3610 rem software-eg ausloesen
  243. 3620 rem===============================
  244. 3630 poke 650,64
  245. 3640 ad=mo+72:x=peek(ad):poke ad,x or 1
  246. 3650 if peek(203)<>64 and peek(198)=0 then 3650
  247. 3660 poke ad,xand254:poke650,128:return
  248. 3700 rem===============================
  249. 3710 rem software-eg an-/abkoppeln
  250. 3720 rem===============================
  251. 3730 eg=not eg
  252. 3740 if eg then print chr$(18);
  253. 3750 syspr,23,31,f1$;"soft-eg[146]":return
  254. 3800 rem===============================
  255. 3810 rem sustain-modus ein/aus
  256. 3820 rem===============================
  257. 3830 su=not su
  258. 3840 if su then print chr$(18);
  259. 3850 syspr,22,31,f1$;"sustain[146]"
  260. 3860 if not su then 2140
  261. 3870 return
  262. 4000 rem===============================
  263. 4010 rem hauptmenue
  264. 4020 rem===============================
  265. 4030 m=0:pv=0:syscl:print "";f1$
  266. 4040 print" [176][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][174]"
  267. 4045 print" [194]         m o d u l a t o r          [146][194]"
  268. 4050 print" [194]     thomas kraetzig       1985     [146][194]"
  269. 4055 print" [173][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][189]"
  270. 4100 syspr,6,1,f2$;"sh v";f1$;" stimmen"
  271. 4105 syspr,7,1,f2$;"   f";f1$;" filter/lautstaerke"
  272. 4110 syspr,8,1,f2$;"   l";f1$;" lfo"
  273. 4115 syspr,9,1,f2$;"   h";f1$;" huellkurve (soft-eg)"
  274. 4120 syspr,10,1,f2$;"   k";f1$;" ksv"
  275. 4125 syspr,11,1,f2$;"sh s";f1$;" sounds"
  276. 4130 syspr,12,1,f2$;"   d";f1$;" disk"
  277. 4135 return
  278. 4200 rem-------------------------------
  279. 4210 rem bild zeilen 15-23
  280. 4220 rem-------------------------------
  281. 4240 syspr,15,1, f2$;"v  1,2,3"
  282. 4245 syspr,15,10,f1$;"stimme 1,2,3
  283. 4250 [158]pr,15,26,f2$;"s"
  284. 4255 [158]pr,15,32,f1$;"sustain"
  285. 4260 [158]pr,16,1, f2$;"sh space"
  286. 4270 [158]pr,16,10,f1$;"eg (ab-)koppeln"
  287. 4280 [158]pr,16,26,f2$;"space"
  288. 4290 [158]pr,16,32,f1$;"eg gate"
  289. 4292 [158]pr,17,1, f2$;"x"
  290. 4294 [158]pr,17,10,f1$;"hauptmenue"
  291. 4300 [158]pr,19,0,f2$;
  292. 4310 [129] i[178]1 [164] 4
  293. 4320 : [153]"  peek peek peek peek peek peek peek peek peek peek peek peek peek peek wait":[130]
  294. 4330 [153]" qpeekwpeekepeekrpeektpeekypeekupeekipeekopeekppeek@peek*peek^peek;peek="
  295. 4340 [158]pr,19,0,;
  296. 4350 [129] i[178]1 [164] 2
  297. 4360 : [153]"           ":[130]
  298. 4370 [153]" 2356790-\c"
  299. 4380 [158]pr,19,31,f1$;"aktiv:"
  300. 4390 [129] i[178]0 [164] 2
  301. 4400 : a$[178][201]([196](i[170]1),1)
  302. 4410 : [141] 3570:[130] i
  303. 4420 [141] 3840:[141] 3740
  304. 4430 [142]
  305. 4500 [143]===============================
  306. 4505 [143] untermenue stimme
  307. 4510 [143]===============================
  308. 4515 m[178]1:pv[178]3050:[158]cl:[153]"wait";f1$
  309. 4520 [153]"     f    pw   a  d  s  r control porta"
  310. 4525 [153]" orlenlenlenlenlenlen=lenlenlenlen=lenlen=lenlen=lenlen=lenlen=lenlenlenlenlenlenlen=lenlenlenlen^"
  311. 4530 [129] i[178]1 [164] 3
  312. 4535 [153]" peek      peek    peek  peek  peek  peek  peek       peek    peek"
  313. 4540 [130] i
  314. 4545 [153]" /lenlenlenlenlenlen>lenlenlenlen>lenlen>lenlen>lenlen>lenlen>=======>lenlenlenlenexp"
  315. 4550 [158]pr,7,26,"peekpeekpeekpeekpeekpeek/lenlensync"
  316. 4555 [158]pr,8,26,"peekpeekpeekpeekpeek/lenlenring"
  317. 4560 [158]pr,9,1,f2$;"f1  ++";f1$
  318. 4565 [158]pr,9,26,"peekpeekpeekpeek/lenlentest"
  319. 4570 [158]pr,10,1,f2$;"f3  +";f1$
  320. 4575 [158]pr,10,26,"peekpeekpeek/lenlentrian"
  321. 4580 [158]pr,11,1,f2$;"f5  -";f1$
  322. 4585 [158]pr,11,26,"peekpeek/lenlensawtooth"
  323. 4590 [158]pr,12,1,f2$;"f7  --";f1$
  324. 4595 [158]pr,12,26,"peek/lenlensquare"
  325. 4600 [158]pr,13,26,"/lenlennoise"
  326. 4602 [143] parameter anzeigen
  327. 4604 a$[178]f2$:f2$[178]f1$
  328. 4606 [129] sn[178]0 [164] 2
  329. 4608 : t[178]t(sn):o[178]o(sn):of[178]of(sn)
  330. 4610 : [141] 3122:[143] f
  331. 4612 : pw[178]([183](mo[170]7[172]sn[170]2)):[141] 3165
  332. 4614 : pw[178][181](ad(sn)[173]16)  :[141] 3195
  333. 4616 : pw[178]ad(sn)[175]15     :[141] 3225
  334. 4618 : pw[178][181](sr(sn)[173]16)  :[141] 3255
  335. 4620 : pw[178]sr(sn)[175]15     :[141] 3285
  336. 4622 : [143] control-byte (7 bit)
  337. 4624 : b[178]c(sn):a[178]128
  338. 4626 : [158]pr,3[170]sn,26,f1$;"0000000"
  339. 4628 : [129] s[178]7 [164] 1 [169] [171]1
  340. 4630 : [139](b[175]a)[167][158]pr,3[170]sn,33[171]s,"1"
  341. 4632 : a[178]a[173]2:[130] s
  342. 4634 : pa[178]mo[170]7[172]sn[170]4:pw[178][194](pa)
  343. 4636 : [141] 3370:[143] porta
  344. 4638 [130] sn
  345. 4640 f2$[178]a$
  346. 4642 sn[178]0:av[178]4700:[158]gs,av:[142]
  347. 4650 [143]-------------------------------
  348. 4652 [143] parameterwahl durch cursor
  349. 4654 [143] hoch
  350. 4656 sn[178]sn[171]1:[139] sn[179]0 [167] sn[178]2
  351. 4658 [141] 5815:[158]gt,av
  352. 4660 [143] runter
  353. 4662 sn[178]sn[170]1:[139] sn[177]2 [167] sn[178]0
  354. 4664 [141] 5815:[158]gt,av
  355. 4666 [143] rechts
  356. 4668 [139] av[179][177]4880 [167] 4674
  357. 4670 s[178]s[170]1:[139] s[177]6 [167] av[178]4910
  358. 4672 [137] 4678
  359. 4674 av[178]av[170]30:[139] av[177]4910 [167] av[178]4700
  360. 4676 [139] av[178]4880 [167] s[178]0
  361. 4678 [141] 5815:[158]gt,av
  362. 4680 [143] links
  363. 4682 [139] av[179][177]4880 [167] 4688
  364. 4684 s[178]s[171]1:[139] s[179]0 [167] av[178]4850
  365. 4686 [137] 4692
  366. 4688 av[178]av[171]30:[139] av[179]4700 [167] av[178]4910
  367. 4690 [139] av[178]4880 [167] s[178]6
  368. 4692 [141] 5815:[158]gt,av
  369. 4700 [143]-------------------------------
  370. 4702 [143] basisfrequenz waehlen
  371. 4704 pb[178]fa[170]40[172](sn[170]3)[170]2
  372. 4706 [129] i[178]pb [164] pb[170]5:[151] i,f2:[130]
  373. 4708 t[178]t(sn):o[178]o(sn):of[178]of(sn)
  374. 4710 pa[178]mo[170]7[172]sn:pv[178]3050:[142]
  375. 4730 [143]-------------------------------
  376. 4732 [143] pulsweite waehlen
  377. 4734 pb[178]fa[170]40[172](sn[170]3)[170]9
  378. 4736 [129] i[178]pb [164] pb[170]3:[151] i,f2:[130]
  379. 4738 pa[178]mo[170]7[172]sn[170]2:pw[178][183](pa):pm[178]4096
  380. 4740 p1[178]1:p2[178]50:pv[178]3150:[142]
  381. 4760 [143]-------------------------------
  382. 4762 [143] attack waehlen
  383. 4764 pb[178]fa[170]40[172](sn[170]3)[170]14
  384. 4766 [151] pb,f2:[151] pb[170]1,f2
  385. 4768 pa[178]si[170]7[172]sn[170]5:pw[178][181](ad(sn)[173]16)
  386. 4770 pm[178]16:p1[178]1:p2[178]1:pv[178]3175:[142]
  387. 4790 [143]-------------------------------
  388. 4792 [143] decay waehlen
  389. 4794 pb[178]fa[170]40[172](sn[170]3)[170]17
  390. 4796 [151] pb,f2:[151] pb[170]1,f2
  391. 4798 pa[178]si[170]7[172]sn[170]5:pw[178]ad(sn)[175]15
  392. 4800 pm[178]16:p1[178]1:p2[178]1:pv[178]3205:[142]
  393. 4820 [143]-------------------------------
  394. 4822 [143] sustain waehlen
  395. 4824 pb[178]fa[170]40[172](sn[170]3)[170]20
  396. 4826 [151] pb,f2:[151] pb[170]1,f2
  397. 4828 pa[178]si[170]7[172]sn[170]6:pw[178][181](sr(sn)[173]16)
  398. 4830 pm[178]16:p1[178]1:p2[178]1:pv[178]3235:[142]
  399. 4850 [143]-------------------------------
  400. 4852 [143] release waehlen
  401. 4854 pb[178]fa[170]40[172](sn[170]3)[170]23
  402. 4856 [151] pb,f2:[151] pb[170]1,f2
  403. 4858 pa[178]si[170]7[172]sn[170]6:pw[178]sr(sn)[175]15
  404. 4860 pm[178]16:p1[178]1:p2[178]1:pv[178]3265:[142]
  405. 4880 [143]-------------------------------
  406. 4882 [143] control-byte waehlen
  407. 4884 pb[178]fa[170]40[172](sn[170]3)[170]26[170]s
  408. 4886 [151] pb,f2
  409. 4888 pa[178]si[170]7[172]sn[170]4:pv[178]3300:[142]
  410. 4910 [143]-------------------------------
  411. 4912 [143] porta waehlen
  412. 4914 pb[178]fa[170]40[172](sn[170]3)[170]35
  413. 4916 [129] i[178]0 [164] 2:[151] pb[170]i,f2:[130]
  414. 4918 pa[178]mo[170]7[172]sn[170]4:pw[178][194](pa):pm[178]256
  415. 4920 p1[178]1:p2[178]10:pv[178]3370:[142]
  416. 5000 [143]===============================
  417. 5005 [143] untermenue filter/laut
  418. 5010 [143]===============================
  419. 5015 m[178]2:pv[178]0:[158]cl:[153]"wait";f1$
  420. 5020 [153]" filter/lautstaerke"
  421. 5025 [153]" orlenlenlenlenlen=lenlenlenlenlen=lenlenlenlenlenlenlenlen=lenlenlenlenlenlenlen=lenlenlenlen^"
  422. 5030 [153]" peekfiltfpeek res peekschalterpeek modus peeklautpeek"
  423. 5035 [153]" -lenlenlenlenlen(NULL)lenlenlenlenlen(NULL)lenlenlenlenlenlenlenlen(NULL)lenlenlenlenlenlenlen(NULL)lenlenlenlen<"
  424. 5040 [153]" peek     peek     peek filt1  peek   lp  peek    peek"
  425. 5045 [153]" -lenlenlenlenlen>lenlenlenlenlen< filt2  peek   bp  -lenlenlenlenexp"
  426. 5050 [153]" peek           peek filt3  peek   hp  peek"
  427. 5055 [153]" peek           peek filtex peek  3off peek"
  428. 5060 [153]" /lenlenlenlenlenlenlenlenlenlenlen>lenlenlenlenlenlenlenlen>lenlenlenlenlenlenlenexp"
  429. 5065 [153] f2$;" f1";f1$;"    ++      filt1      lp    ++"
  430. 5070 [153] f2$;" f3";f1$;"    +       filt2      bp    +"
  431. 5075 [153] f2$;" f5";f1$;"    -       filt3      hp    -"
  432. 5080 [153] f2$;" f7";f1$;"    -       filtex    3off   --"
  433. 5085 pw[178]([194](mo[170]21)[175]7)[170]8[172][194](mo[170]22)
  434. 5090 [158]pr,5, 7[171][195]([196](pw)),pw
  435. 5095 pw[178][181](rf[173]16)
  436. 5100 [158]pr,5,12[171][195]([196](pw)),pw
  437. 5102 [139]rf[175]1[167] [158]pr,5,15,"filt1 wait"
  438. 5104 [139]rf[175]2[167] [158]pr,6,15,"filt2 wait"
  439. 5106 [139]rf[175]4[167] [158]pr,7,15,"filt3 wait"
  440. 5108 [139]rf[175]8[167] [158]pr,8,15,"tiltexwait"
  441. 5110 pw[178][194](mo[170]23)
  442. 5112 [139]pw[175] 16[167] [158]pr,5,25," lp wait"
  443. 5114 [139]pw[175] 32[167] [158]pr,6,25," bp wait"
  444. 5116 [139]pw[175] 64[167] [158]pr,7,25," hp wait"
  445. 5118 [139]pw[175]128[167] [158]pr,8,25,"3offwait"
  446. 5120 pw[178][194](mo[170]23)[175]15
  447. 5122 [158]pr,5,34[171][195]([196](pw)),pw
  448. 5125 av[178]5200:[158]gs,av:[142]
  449. 5130 [143]-------------------------------
  450. 5135 [143] parameterwahl durch cursor
  451. 5140 [143] rechts
  452. 5145 av[178]av[170]50:[139] av[177]5400 [167] av[178]5200
  453. 5150 [137] 5165
  454. 5155 [143] links
  455. 5160 av[178]av[171]50:[139] av[179]5200 [167] av[178]5400
  456. 5165 [141] 5815:a[178]pb[171]fa[171]200
  457. 5170 [139] a[179][177]15 [175] a[179][177]25 [167] [158]gt,av
  458. 5175 [129] j[178]1[164]3:pb[178]pb[170]40:[141]5815:[130]
  459. 5180 pb[178]pb[171]120:[158]gt,av
  460. 5200 [143]-------------------------------
  461. 5205 [143] filterfrequenz anwaehlen
  462. 5210 pb[178]fa[170]203
  463. 5215 [129] i[178]pb [164] pb[170]3:[151] i,f2:[130]
  464. 5220 pa[178]mo[170]21:pw[178][194](pa)[170]8[172][194](pa[170]1)
  465. 5225 pm[178]2048:p1[178]1:p2[178]50:pv[178]2850:[142]
  466. 5250 [143]-------------------------------
  467. 5255 [143] resonanz anwaehlen
  468. 5260 pb[178]fa[170]210
  469. 5265 [151] pb,f2:[151] pb[170]1,f2
  470. 5270 pa[178]si[170]23:pw[178][181](rf[173]16)
  471. 5275 pm[178]16:p1[178]1:p2[178]1:pv[178]2875:[142]
  472. 5300 [143]-------------------------------
  473. 5305 [143] schalter anwaehlen
  474. 5310 pb[178]fa[170]215
  475. 5315 [129] i[178]0 [164] 120 [169]40:[129] j[178]0 [164] 5
  476. 5320 : [151] pb[170]i[170]j,f2:[130]:[130]
  477. 5325 pa[178]si[170]23:pw[178]rf [175] 15
  478. 5330 pv[178]2900:[142]
  479. 5350 [143]-------------------------------
  480. 5355 [143] modus anwaehlen
  481. 5360 pb[178]fa[170]225
  482. 5365 [129] i[178]0 [164] 120 [169]40:[129] j[178]0 [164] 3
  483. 5370 : [151] pb[170]i[170]j,f2:[130]:[130]
  484. 5375 pa[178]mo[170]23
  485. 5380 pv[178]2955:[142]
  486. 5400 [143]-------------------------------
  487. 5405 [143] lautstaerke anwaehlen
  488. 5410 pb[178]fa[170]232
  489. 5415 [151] pb,f2:[151] pb[170]1,f2
  490. 5420 pa[178]mo[170]23:pw[178][194](pa) [175] 15
  491. 5425 pm[178]16:p1[178]1:p2[178]1:pv[178]3010:[142]
  492. 5500 [143]===============================
  493. 5505 [143] untermenue lfo
  494. 5510 [143]===============================
  495. 5515 m[178]3:[158]cl:[153]"wait";f1$;
  496. 5520 [153]"   orlenlenlenlenlenlen=lenlenlenlen=lenlenlenlen=lenlenlenlenlenlen=lenlenlenlenlen^"
  497. 5525 [153]"   peek lfof peeklfoppeeklfoapeekkurve peekmoduspeek"
  498. 5530 [153]" orlen(NULL)lenlenlenlenlenlen(NULL)lenlenlenlen(NULL)lenlenlenlen(NULL)lenlenlenlenlenlen(NULL)lenlenlenlenlen(NULL)lenlenlenlen^"
  499. 5535 [129] z[178]3 [164] 9
  500. 5540 : [158]pr,z,1,"peek peek      peek    peek    peek      peek     peek    peek"
  501. 5545 [130] z
  502. 5550 [158]pr,10,1,"/len>lenlenlenlenlenlen>lenlenlenlen>lenlenlenlen>lenlenlenlenlenlen>lenlenlenlenlen>lenlenlenlenexp
  503. 5555 print f2$;" f1";f1$;"  ++     ++   ++  trian  reset"
  504. 5560 print f2$;" f3";f1$;"  +      +    +   sawup  hold"
  505. 5565 print f2$;" f5";f1$;"  -      -    -   sawdwn run"
  506. 5570 print f2$;" f7";f1$;"  --     --   --  square"
  507. 5575 for ln=0 to 6
  508. 5580 : z=3+ln
  509. 5585 : syspr,z,2,chr$(48+ln)
  510. 5590 : pw=usr(mo+32+5*ln)     :rem lfof
  511. 5595 : syspr,z,10-len(str$(pw)),pw
  512. 5600 : pw=peek(mo+34+5*ln)    :rem lfop
  513. 5605 : syspr,z,15-len(str$(pw)),pw
  514. 5610 : pw=peek(mo+35+5*ln)    :rem lfoa
  515. 5615 : syspr,z,20-len(str$(pw)),pw
  516. 5620 : pw=peek(mo+36+5*ln)    :rem lfoc
  517. 5625 : syspr,z,21,kv$((pw and 24)/8)
  518. 5630 : syspr,z,28,md$((pw and  6)/2)
  519. 5640 next ln
  520. 5645 ln=0:av=5830:sysgs,av:return
  521. 5650 rem-------------------------------
  522. 5655 rem parameterwahl durch cursor
  523. 5670 rem hoch
  524. 5675 ln=ln-1:if ln<0 then ln=6
  525. 5680 gosub 5815:sysgt,av
  526. 5685 rem runter
  527. 5690 ln=ln+1:if ln>6 then ln=0
  528. 5695 gosub 5815:sysgt,av
  529. 5700 rem rechts
  530. 5705 av=av+30:if av>5950 then av=5830
  531. 5710 gosub 5810:sysgt,av
  532. 5715 rem links
  533. 5720 av=av-30:if av<5830 then av=5950
  534. 5725 gosub 5810:sysgt,av
  535. 5800 rem-------------------------------
  536. 5805 rem aktueles parameterfeld farbe 1
  537. 5810 syspr,6,34,"    "
  538. 5815 fori=pbtopb+6:pokei,f1:next:return
  539. 5820 rem-------------------------------
  540. 5825 rem lfof anwaehlen
  541. 5830 pb=fa+40*(ln+3)+4
  542. 5835 for i=pb to pb+5:poke i,f2:next
  543. 5840 pa=mo+32+5*ln:pw=usr(pa):pm=65536
  544. 5845 p1=1:p2=200:pv=2610:return
  545. 5850 rem-------------------------------
  546. 5855 rem lfop anwaehlen
  547. 5860 pb=fa+40*(ln+3)+11
  548. 5865 for i=pb to pb+3:poke i,f2:next
  549. 5870 pa=mo+34+5*ln:pw=peek(pa):pm=256
  550. 5875 p1=1:p2=10 :pv=2640:return
  551. 5880 rem-------------------------------
  552. 5885 rem lfoa waehlen
  553. 5890 pb=fa+40*(ln+3)+16
  554. 5895 for i=pb to pb+3:poke i,f2:next
  555. 5900 pa=mo+35+5*ln:pw=peek(pa):pm=256
  556. 5905 p1=1:p2=10 :pv=2670:return
  557. 5910 rem-------------------------------
  558. 5915 rem lfo kurve waehlen
  559. 5920 pb=fa+40*(ln+3)+21
  560. 5925 for i=pb to pb+5:poke i,f2:next
  561. 5930 pa=mo+36+5*ln:pv=2700
  562. 5935 b=(peek(pa) and 24)/8:goto 2717
  563. 5940 rem-------------------------------
  564. 5945 rem lfo modus waehlen
  565. 5950 pb=fa+40*(ln+3)+28
  566. 5955 for j=pb to pb+4:poke j,f2:next
  567. 5960 pa=mo+36+5*ln
  568. 5965 pv=2730:return
  569. 6000 rem===============================
  570. 6010 rem untermenue eg
  571. 6020 rem===============================
  572. 6030 m=4:syscl:print"[146]";f1$
  573. 6040 print" software-eg":print:print
  574. 6050 print" [176][195][195][195][195][178][195][195][195][195][178][195][195][195][195][178][195][195][195][195][178][195][195][195][195][178][195][195][195][195][195][178][195][195][195][195][195][174]"
  575. 6060 print" [194]  a [194]  d [194]  s [194]  r [194] ega[194] form[194]modus[194]"
  576. 6070 print" [171][195][195][195][195][219][195][195][195][195][219][195][195][195][195][219][195][195][195][195][219][195][195][195][195][219][195][195][195][195][195][219][195][195][195][195][195][179]"
  577. 6080 print" [194]    [194]    [194]    [194]    [194]    [194]     [194]     [194]"
  578. 6090 print" [173][195][195][195][195][177][195][195][195][195][177][195][195][195][195][177][195][195][195][195][177][195][195][195][195][177][195][195][195][195][195][177][195][195][195][195][195][189]"
  579. 6100 syspr,10,1,f2$;"f1":print" f3"
  580. 6110 print" f5":print" f7";f1$
  581. 6120 syspr,10,13,"++                  reset"
  582. 6130 syspr,11,13,"+               +   hold"
  583. 6140 syspr,12,13,"-               -   run"
  584. 6150 syspr,13,13,"--"
  585. 6160 for i=0 to 4
  586. 6170 : pw=peek(mo+67+i)
  587. 6180 : syspr,7,6+5*i-len(str$(pw)),pw
  588. 6190 next i
  589. 6210 pw=peek(mo+72)
  590. 6220 syspr,7,29,chr$(43+(pw and 8)/4)
  591. 6230 syspr,7,33,md$((pw and 6)/2)
  592. 6240 av=6310:an=0:sysgt,av
  593. 6300 rem-------------------------------
  594. 6305 rem a d s r ega (an=0-4) waehlen
  595. 6310 pb=fa+282+5*an:s=2+5*an
  596. 6315 for i=pb to pb+3:poke i,f2:next
  597. 6320 pa=mo+67+an  :pw=peek(pa)
  598. 6325 pm=256:if an=0 then pm=129
  599. 6330 p1=1:p2=10:pv=2760:return
  600. 6335 rem-------------------------------
  601. 6340 rem eg form waehlen
  602. 6345 pb=fa+280+27:poke pb+2,f2
  603. 6350 pa=mo+72:pv=2780:return
  604. 6370 rem-------------------------------
  605. 6375 rem eg modus waehlen
  606. 6380 pb=fa+280+33
  607. 6385 for i=pb to pb+4:poke i,f2:next
  608. 6390 pa=mo+72:pv=2820:return
  609. 6395 rem-------------------------------
  610. 6400 rem parameterwahl durch cursor
  611. 6405 rem links
  612. 6410 if av<>6310 then 6420
  613. 6415 an=an-1:if an>=0 then 6430
  614. 6420 av=av-35:an=4
  615. 6425 if av<6310 then av=6380
  616. 6430 gosub 5815:sysgt,av
  617. 6435 rem rechts
  618. 6440 if av<>6310 then 6450
  619. 6445 an=an+1:if an<=4 then 6460
  620. 6450 av=av+35
  621. 6455 if av>6380 then av=6310:an=0
  622. 6460 gosub 5815:sysgt,av
  623. 6500 rem===============================
  624. 6510 rem untermenue ksv
  625. 6520 rem===============================
  626. 6530 m=5:pv=0:print"[146]";:syscl
  627. 6540 syspr,1,1,f1$;"kreuzschienen-verteiler"
  628. 6550 syspr,3,1,"e    lfo"
  629. 6560 syspr,4,1,"g6543210"
  630. 6570 syspr,5,1,f2$;"[164][164][164][164][164][164][164][164]"
  631. 6580 a$=f2$+"[167]"+f1$+"        "+f2$+"[212] "+f1$
  632. 6590 print a$;"f1";f2$;"     cursortasten"
  633. 6600 print a$;"f2"
  634. 6610 print a$;"f3"
  635. 6620 print a$;"p1";f2$;"     f1 ";f1$;"verbindung"
  636. 6630 print a$;"p2"
  637. 6640 print a$;"p3";f2$;"     f7 ";f1$;"keine verbindung"
  638. 6650 print a$;"filt"
  639. 6660 print a$;"laut"
  640. 6670 print f2$;" [163][163][163][163][163][163][163][163]"
  641. 6680 for z=0 to 7:gosub 6730:next
  642. 6685 z=0:s=7:poke 55296+40*(6+z)+8-s,f2
  643. 6690 return
  644. 6700 rem-------------------------------
  645. 6710 rem ksv-byte z anzeigen
  646. 6720 rem-------------------------------
  647. 6730 b=peek(mo+24+z):a=128
  648. 6740 syspr,6+z,1,f1$;"00000000"
  649. 6750 if b=0 then return
  650. 6760 for s=7 to 0 step -1
  651. 6770 if(b and a)thensyspr,6+z,8-s,"1";
  652. 6780 a=a/2:next s
  653. 6790 print f1$;:return
  654. 6800 rem-------------------------------
  655. 6810 rem cursorbewegungen
  656. 6820 rem-------------------------------
  657. 6830 poke 55296+40*(6+z)+8-s,f1:rem aus
  658. 6840 z=(z-1) and 7:goto 6910:rem hoch
  659. 6850 poke 55296+40*(6+z)+8-s,f1
  660. 6860 z=(z+1) and 7:goto 6910:rem runter
  661. 6870 poke 55296+40*(6+z)+8-s,f1
  662. 6880 s=(s+1) and 7:goto 6910:rem links
  663. 6890 poke 55296+40*(6+z)+8-s,f1
  664. 6900 s=(s-1) and 7:goto 6910:rem rechts
  665. 6910 poke 55296+40*(6+z)+8-s,f2:rem an
  666. 6915 return
  667. 6920 rem-------------------------------
  668. 6925 rem ksv bit z,s setzen
  669. 6930 rem-------------------------------
  670. 6935 ad=mo+24+z
  671. 6940 poke ad,peek(ad) or 2^s
  672. 6950 poke 1024+40*(6+z)+8-s,177:return
  673. 6960 rem-------------------------------
  674. 6965 rem ksv bit z,s setzen
  675. 6970 rem-------------------------------
  676. 6975 ad=mo+24+z
  677. 6980 poke ad,peek(ad) and (255-2^s)
  678. 6990 poke 1024+40*(6+z)+8-s,176:return
  679. 7000 rem===============================
  680. 7005 rem untermenue sounds
  681. 7010 rem===============================
  682. 7015 m=6:pv=0:syscl:print"[146]";f2$
  683. 7020 syspr,1,8,"a           b           c"
  684. 7025 print f1$;"   [176][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][174]"
  685. 7030 for i=1 to 8
  686. 7035 syspr,2+i,1,f2$;chr$(48+i);f1$" [194]"
  687. 7040 syspr,2+i,38,"[194]":next
  688. 7045 syspr,11,3,"[173][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][189]"
  689. 7050 syspr,12,4,f2$;"a-c 1-8"
  690. 7055 syspr,12,13,f1$;"sound waehlen"
  691. 7060 syspr,13,1,f2$;"_  a-c 1-8"
  692. 7065 syspr,13,13,f1$"sound abspeichern"
  693. 7070 syspr,14,1,f2$;"n"
  694. 7075 syspr,14,13,f1$;"namen eingeben (return)"
  695. 7080 for s=0 to 2:for z=0 to 7
  696. 7085 : syspr,3+z,4+s*12,;
  697. 7090 : sysna,so+107*(8*s+z)+97
  698. 7095 next:next:ifns<0thenz=0:s=0:return
  699. 7100 z=ns and 7:s=int(ns/8):goto 7180
  700. 7110 rem-------------------------------
  701. 7115 rem sound waehlen (a,b,c)
  702. 7120 x=a-65 :rem spalte 0,1,2
  703. 7122 syspr,12,13,f2$;"[146]sound waehlen"
  704. 7125 get a$:if a$="" then 7125
  705. 7130 y=asc(a$)-49:rem zeile
  706. 7135 if y<0 or y>7 then 7142
  707. 7140 gosub 7150:gosub 7400
  708. 7142 syspr,12,13,f1$;"[146]sound waehlen"
  709. 7144 return
  710. 7146 rem-------------------------------
  711. 7150 rem altes namenfeld normal
  712. 7155 ns=8*s+z
  713. 7160 : syspr,3+z,4+s*12,f1$;"[146]";
  714. 7165 : sysna,so+107*ns+97
  715. 7170 rem neues namenfeld hervorheben
  716. 7175 s=x:z=y:ns=8*s+z
  717. 7180 : syspr,3+z,4+s*12,f2$;"[146]";
  718. 7185 : sysna,so+107*ns+97
  719. 7190 return
  720. 7200 rem-------------------------------
  721. 7205 rem sound abspeichern
  722. 7210 syspr,13,13,f2$;"[146]sound abspeichern"
  723. 7215 get a$:if a$="" then 7215
  724. 7220 x=asc(a$)-65:rem spalte
  725. 7225 if x<0 or x>2 then 7250
  726. 7230 get a$:if a$="" then 7230
  727. 7235 y=asc(a$)-49:rem zeile
  728. 7240 if y<0 or y>7 then 7250
  729. 7245 gosub 7150:gosub 7450:goto 7260
  730. 7250 syspr,13,13,f1$;"[146]sound abspeichern"
  731. 7255 return
  732. 7260 syspr,13,13,f1$;"[146]sound abspeichern"
  733. 7300 rem-------------------------------
  734. 7305 rem namen eingeben (z,s,ns)
  735. 7310 syspr,14,13,f2$;"namen eingeben (return)"
  736. 7315 x=12*s+4:y=z+3:ad=1024+40*y+x
  737. 7320 sa=so+107*ns+97:i=0
  738. 7325 poke ad+i,peek(ad+i) or 128
  739. 7330 get a$:if a$="" then 7330
  740. 7335 a=asc(a$):if a<32or a>95 then 7370
  741. 7340 rem zeichen ausgeben
  742. 7345 syspr,y,x+i,f2$;a$;:poke sa+i,a
  743. 7350 i=i+1
  744. 7355 if i>9 then i=9:goto 7325
  745. 7360 if i<0 then i=0
  746. 7365 goto 7325
  747. 7370 if a=29 then poke ad+i,peek(ad+i) and 127:goto 7350
  748. 7375 if a=157then poke ad+i,peek(ad+i) and 127:i=i-1:goto 7355
  749. 7380 if a<>13 then 7330
  750. 7385 poke ad+i,peek(ad+i) and 127
  751. 7390 syspr,14,13,f1$;"namen eingeben (return)"
  752. 7395 return
  753. 7400 rem-------------------------------
  754. 7402 rem parametersatz ns holen
  755. 7404 sa=so+ns*107:sysge,sa
  756. 7406 for i=0 to 2
  757. 7408 : ad=sa+7*i
  758. 7410 : bf(i)=usr(ad+73)
  759. 7412 : x=bf(i)/17.0327/440
  760. 7414 : y=log(x)/log(2) :rem x=2^y
  761. 7416 : y=y+4+9/12+49/1200
  762. 7418 : o(i)=int(y):y=(y-o(i))*12
  763. 7420 : t(i)=int(y)
  764. 7422 : of(i)=int((y-t(i))*100-48.5)
  765. 7424 : s(i)=(peek(ad+75)=1)
  766. 7426 : a$=chr$(49+i):gosub 3570
  767. 7428 : c(i)=peek(ad+77) and 254
  768. 7430 : c1(i)=c(i) or 1
  769. 7432 : ad(i)=peek(ad+78)
  770. 7434 : sr(i)=peek(ad+79)
  771. 7436 next i
  772. 7438 rf=peek(sa+94)
  773. 7440 eg=(peek(sa+95)=1):gosub 3740
  774. 7442 su=(peek(sa+96)=1):gosub 3840
  775. 7444 return
  776. 7450 rem-------------------------------
  777. 7452 rem parametersatz ns abspeichern
  778. 7454 sa=so+ns*107:syspu,sa
  779. 7456 for sn=0 to 2
  780. 7458 : ad=sa+7*sn
  781. 7460 : sysdo,ad+73,bf(sn)
  782. 7462 : poke ad+75,-s(sn)
  783. 7464 : poke ad+77,c(sn)
  784. 7466 : poke ad+78,ad(sn)
  785. 7468 : poke ad+79,sr(sn)
  786. 7470 next sn
  787. 7472 poke sa+94,rf
  788. 7474 poke sa+95,-eg
  789. 7476 poke sa+96,-su
  790. 7478 return
  791. 7500 rem===============================
  792. 7505 rem untermenue diskette
  793. 7510 rem===============================
  794. 7515 m=7:pv=0:syscl:print"";f1$
  795. 7520 print" disk"
  796. 7525 syspr,5,4,f2$;"f1"
  797. 7530 syspr,5,7,f1$;"sounds laden"
  798. 7535 syspr,7,4,f2$;"f3"
  799. 7540 syspr,7,7,f1$;"sounds abspeichern"
  800. 7545 return
  801. 7600 rem-------------------------------
  802. 7605 rem sounds laden
  803. 7610 syspr,5,7,f2$;"sounds laden"
  804. 7615 syspr,10,4,f1$;"dateiname ";
  805. 7620 dn$="sounds              "
  806. 7625 syspr,10,16,dn$
  807. 7630 syspr,10,14,;:input dn$
  808. 7635 open 8,8,8,dn$+",p,r":close 8
  809. 7640 open1,8,15:input#1,a,a$,x,y:close1
  810. 7645 syspr,12,4,"                             "
  811. 7650 if a=0 then 7660
  812. 7655 syspr,12,3,a;a$;x;y:goto 7625
  813. 7660 a=0:load dn$,8,1
  814. 7665 syspr,5,7,f1$;"sounds laden"
  815. 7670 ns=-1:a=211:goto 1550
  816. 7700 rem-------------------------------
  817. 7705 rem sounds abspeichern
  818. 7710 syspr,7,7,f2$;"sounds abspeichern"
  819. 7715 syspr,10,4,f1$;"dateiname ";
  820. 7720 dn$="sounds              "
  821. 7725 syspr,10,16,dn$
  822. 7730 syspr,10,14,;:input dn$
  823. 7735 sys 50198:rem modulator aus
  824. 7740 rem bereich $8000-$8a08 auf disk
  825. 7745 open 1,8,1,"@:"+dn$
  826. 7750 poke 252,0:poke 253,144:rem $9000
  827. 7755 poke 780,252:rem akku
  828. 7760 poke 781,8  :rem x-reg = $08
  829. 7765 poke 782,154:rem y-reg = $9a
  830. 7770 sys 65496   :rem kernal save
  831. 7775 close 1
  832. 7780 open1,8,15:input#1,a,a$,x,y:close1
  833. 7785 if a=0 then 7795
  834. 7790 syspr,12,4,a;a$;x;y:goto 7725
  835. 7795 syspr,12,4,"                              "
  836. 7800 syspr,7,7,f1$;"sounds abspeichern"
  837. 7805 sys 50185:return:rem modulator an
  838. 8000 rem===============================
  839. 8010 rem vorbesetzung, initialisierung
  840. 8020 rem===============================
  841. 8030 print"[147]       ";
  842. 8035 print"bitte 30 sekunden warten"
  843. 8040 rem-------------------------------
  844. 8045 rem ms-programme in kassettenpuf.
  845. 8050 for i=0 to 22   :rem kernal-gosub
  846. 8055 poke 828+i,peek(43139+i):next
  847. 8060 fori=0to129:readx:poke851+i,x:next
  848. 8065 poke785,169:poke 786,3:rem usr
  849. 8070 rem-------------------------------
  850. 8072 rem ms-programme ab $c423
  851. 8074 for i=50211 to 50291
  852. 8076 read x:poke i,x:next
  853. 8078 rem-------------------------------
  854. 8080 rem namen der toene
  855. 8082 for i=0 to 11:read tn$(i):next
  856. 8100 rem-------------------------------
  857. 8110 rem sprungvektoren
  858. 8120 read a$:l=len(a$)
  859. 8130 on l goto 8150,8220,8280,8310
  860. 8150 rem l=1  ascii-zeichen
  861. 8160 a=asc(a$)
  862. 8170 if m>=0 then v%(m,a)=zn:goto 8120
  863. 8180 for i=0 to 7:v%(i,a)=zn:next
  864. 8190 goto 8120
  865. 8200 if left$(a$,1)<>"m" then 8120
  866. 8220 rem l=2  menue-indikator
  867. 8230 if left$(a$,1)<>"m" then 8120
  868. 8240 a$=right$(a$,1)
  869. 8250 if a$="a" then m=-1 :goto 8120
  870. 8260 m=val(a$)           :goto 8120
  871. 8280 rem l=3  ascii-wert
  872. 8290 a=val(a$) :goto 8170
  873. 8310 rem l=4  zeilennummer oder ende
  874. 8320 if a$="ende" then 8340
  875. 8330 zn=val(a$) :goto 8120
  876. 8340 rem-------------------------------
  877. 8350 rem tonnummern
  878. 8360 a$="q2w3er5t6y7ui9o0p@-*\^;="
  879. 8370 for i=0 to 24
  880. 8380 : a=asc(mid$(a$,i+1,1))
  881. 8390 : tn%(a)=i
  882. 8400 : for j=0 to 7:v%(j,a)=2000:next
  883. 8410 next i
  884. 8450 rem-------------------------------
  885. 8455 rem frequenzen der tonleiter
  886. 8460 for i=0 to 24:th(i)=2^(i/12):next
  887. 8465 rem-------------------------------
  888. 8470 rem konstanten
  889. 8472 gs=828:gt=857:pr=869:do=897:cl=959
  890. 8474 na=50229:ge=50245:pu=50276
  891. 8480 si=54272:mo=49152:fa=55296
  892. 8482 so=36864
  893. 8484 f1$=chr$(154):f1=14
  894. 8490 f2$=chr$(5)  :f2=1
  895. 8495 kv$(0)="trian ":kf$(0)="[206][205][206][205]"
  896. 8500 kv$(1)="sawup ":kf$(1)="[206][204][206][204]"
  897. 8505 kv$(2)="sawdwn":kf$(2)="[186][205][186][205]"
  898. 8510 kv$(3)="square":kf$(3)="[207][204][207][204]"
  899. 8515 md$(0)="reset" :md$(1)="reset"
  900. 8520 md$(2)="hold " :md$(3)="run  "
  901. 8525 bl$(0)="":bl$(1)=" ":bl$(2)="  "
  902. 8530 bl$(3)="   ":bl$(4)="    "
  903. 8535 bl$(5)="     ":bl$(6)="      "
  904. 8540 rem-------------------------------
  905. 8545 rem soundparameter vorbesetzungen
  906. 8550 for sn=0 to 2
  907. 8555 : poke si+7*sn+5,10 :ad(sn)=10
  908. 8560 : poke si+7*sn+6,138:sr(sn)=138
  909. 8565 : o(sn)=3+sn:of(sn)=0:t(sn)=0
  910. 8570 : bf=440*2^(o(sn)-4+(t(sn)-9)/12+of(sn)/1200)
  911. 8572 : bf(sn)=bf*17.0327
  912. 8575 :  c(sn)=64         :c1(sn)=65
  913. 8580 :  s(sn)=(sn=0)
  914. 8585 : sysdo,mo+7*sn+2,2048 :rem pw
  915. 8590 : poke  mo+7*sn+4,0    :rem porta
  916. 8595 next sn
  917. 8600 poke  si+23,0:rf=0  :rem res/filt
  918. 8605 sysdo,mo+21,0       :rem filterfr.
  919. 8610 poke  mo+23,15      :rem mod/laut
  920. 8615 for i=24 to 72 :rem ksv,lfo,eg aus
  921. 8620 : poke mo+i,0:next
  922. 8625 eg=0         :rem eg abkoppeln
  923. 8630 su=0         :rem sustain aus
  924. 8635 rem-------------------------------
  925. 8640 rem sounds vorbesetzen
  926. 8645 for ns=0 to 23
  927. 8650 : gosub 7450
  928. 8655 : ad=so+107*ns+97
  929. 8660 : for i=ad to ad+9:poke i,46:next
  930. 8665 next ns:ns=0
  931. 8700 rem-------------------------------
  932. 8870 rem farben, bild, modulator
  933. 8880 poke 53280,14:poke 53281,6
  934. 8890 print f1$;"[146]";:poke 650,128
  935. 8900 gosub 4200 :rem bild zeilen 15-23
  936. 8910 sys mo+1033:rem modulator aktiv.
  937. 8920 a=2:return
  938. 9000 rem===============================
  939. 9010 rem datas
  940. 9020 rem===============================
  941. 9030 rem maschinenprogramme
  942. 9060 data 032,089,003,076,174,167,032
  943. 9070 data 253,174,032,138,173,032,247
  944. 9080 data 183,076,163,168,032,253,174
  945. 9090 data 032,158,183,138,072,032,253
  946. 9100 data 174,032,158,183,138,168,104
  947. 9110 data 170,024,032,240,255,032,253
  948. 9120 data 174,076,160,170,032,253,174
  949. 9130 data 032,138,173,032,247,183,165
  950. 9140 data 020,133,158,165,021,133,159
  951. 9150 data 032,253,174,032,138,173,032
  952. 9160 data 247,183,160,000,120,165,020
  953. 9170 data 145,158,200,165,021,145,158
  954. 9180 data 088,096,032,247,183,160,000
  955. 9190 data 120,177,020,133,099,200,177
  956. 9200 data 020,088,133,098,162,144,056
  957. 9210 data 076,073,188,169,032,162,000
  958. 9220 data 157,000,004,157,000,005,202
  959. 9230 data 208,247,162,087,157,000,006
  960. 9240 data 202,016,250,096
  961. 9250 rem-------------------------------
  962. 9260 rem maschinenprogramme ab $c423
  963. 9270 data 032,253,174,032,138,173,032
  964. 9280 data 247,183,165,020,133,158,165
  965. 9290 data 021,133,159,096,032,035,196
  966. 9300 data 160,000,177,158,032,210,255
  967. 9310 data 200,192,010,208,246,096,032
  968. 9320 data 035,196,160,000,177,158,153
  969. 9330 data 000,192,200,192,073,208,246
  970. 9340 data 177,158,153,183,211,200,192
  971. 9350 data 094,208,246,177,158,141,023
  972. 9360 data 212,096,032,035,196,160,000
  973. 9370 data 185,000,192,145,158,200,192
  974. 9380 data 073,208,246,096
  975. 9400 rem-------------------------------
  976. 9410 rem  namen der toene
  977. 9420 data c,c#,d,d#,e,f,f#,g,g#,a,a#,h
  978. 9500 rem-------------------------------
  979. 9510 rem datas fuer sprungverteiler
  980. 9520 data ma,4000,x,3500,v,3600,032
  981. 9530 data ma,3700,160,3800,s
  982. 9540 data ma,2550,133,2560,134
  983. 9550 data ma,2570,135,2580,136,4500,214
  984. 9555 data ma,5500,l,6000,h,6500,k
  985. 9560 data ma,5000,f,7000,211,7500,d
  986. 9565 data m1,4654,145,4660,017
  987. 9570 data m1,4666,029,4680,157
  988. 9580 data m2,5160,157,5145,029
  989. 9600 data m3,5675,145,5690,017
  990. 9610 data m3,5720,157,5705,029
  991. 9620 data m4,6410,157,6440,029
  992. 9630 data m5,6830,145,6850,017
  993. 9640 data m5,6870,157,6890,029
  994. 9650 data m5,6935,133,134,6975,135,136
  995. 9700 data m6,7110,a,b,c,7200,_,7300,n
  996. 9750 data m7,7600,133,7700,134
  997. 9900 data ende
  998.